1. Field
The present invention relates generally to communication, and more specifically to a method and apparatus for implementing a virtual real-time clock based on time information from multiple communication systems.
2. Background
It is often desirable, and sometimes necessary, for a wireless terminal to know accurate time. One specific application that requires accurate time is position determination based on the well-known Global Positioning System (GPS), which is a constellation of 24 well-spaced satellites that orbit the earth. Each GPS satellite transmits a signal encoded with information that allows GPS receivers on earth to measure the time of arrival of the received signal relative to an arbitrary point in time. This relative time-of-arrival measurement may then be converted to a “pseudo-range”. The position of a GPS receiver may be accurately estimated based on pseudo-range measurements for a sufficient number of satellites and their locations.
The time-of-arrival of a signal from a GPS satellite may be determined by processing the GPS signal itself to obtain the necessary time information. For GPS, the complete time information may be partitioned into three different time components: bit of week (BOW), epoch (in bit), and sub-code frame (all of which are described in detail below). Each time component covers a different time range and has a different time resolution. Each time component may be obtained from the GPS signal based on different signal processing by the receiver. The processing to obtain these time components is typically performed in sequential order, in increasing coarse time resolution, such that sub-code frame (fine) timing is obtained first, epoch (in bit) timing is obtained next, and BOW (coarse) time information is obtained last. The processing time to obtain a given time component from the GPS signal is thus cumulative (i.e., equal to the processing time for that time component plus the processing time for all finer time components). If the GPS receiver has a priori knowledge of any of these time components, then it can skip the corresponding processing to obtain the component. This would then reduce the amount of time needed to obtain the pseudo-range measurement and, ultimately, a position fix for the terminal.
A terminal can obtain GPS time as one of the results of a position fix. The GPS time can be viewed as “true” or absolute time, and includes all three time components described above. This GPS time may be used to “time stamp” the internal timing of the terminal, so that it knows true or absolute time at a specific time instant. Between position fixes, the terminal may be operated in an idle mode whereby as much circuitry as possible is powered down to conserve battery power. While in the idle mode, the terminal typically maintains a counter that is operated based on an internal clock. The counter is effectively a timer used to provide time information for the terminal while it is idle and not receiving signals from any transmitters.
The terminal may be commanded to perform a new position fix at an arbitrary time instant. The counter may then be used as a real-time clock to estimate the amount of time that has elapsed, as measured by the terminal's internal clock, since the time instant for which the last GPS time was obtained. The absolute time at this arbitrary time instant may be estimated by adding the elapsed time estimate to the last GPS time. The accuracy of this absolute time estimate is dependent on the accuracy of the elapsed time estimate. If the elapsed time can be estimated with a relatively high degree of accuracy, then the absolute time estimate is reasonably accurate. In this case, it may not be necessary to recover BOW and epoch in bit timing for the new position fix. Consequently, the new position fix may be obtained in a much shorter amount of time, which is highly desirable.
Unfortunately, the terminal's internal clock may not be sufficiently accurate. For example, the internal clock used to implement the terminal's real-time clock may have an error as large as 100 parts per million (ppm). The elapsed time estimate would then be in error by the same ppm amount, with the magnitude of the error being larger for longer elapsed time. For example, a 100 ppm error on an elapse time of 50 seconds is 5 msec, and the same 100 ppm error on an elapsed time of 500 seconds is 50 msec. A large error in the elapsed time estimate may then necessitate the need to recover epoch in bit and (possibly) BOW timing for a new position fix, which is highly undesirable.
There is therefore a need in the art for a method and apparatus to implement a real-time clock having higher accuracy and which may be used for various applications such as position determination.